home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / More Source / C⁄C++ / Xconq 7.0d37 / source / kernel / tables.c < prev    next >
Text File  |  1994-02-26  |  3KB  |  93 lines

  1. /* Definitions and functions for Xconq's tables.
  2.    Copyright (C) 1991, 1992, 1993, 1994 Stanley T. Shebs.
  3.  
  4. Xconq is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2, or (at your option)
  7. any later version.  See the file COPYING.  */
  8.  
  9. #include "config.h"
  10. #include "misc.h"
  11. #include "lisp.h"
  12. #include "game.h"
  13.  
  14. /* None of this is used in a compiled Xconq. */
  15.  
  16. #ifndef SPECIAL
  17.  
  18. /* Fill in the array that defines the characteristics of each table. */
  19.  
  20. TableDefn tabledefns[] = {
  21.  
  22. #undef  DEF_UU_TABLE
  23. #define DEF_UU_TABLE(NAME,FNAME,DOC,TABLE,CNST,LO,DFLT,HI)  \
  24.     { NAME, FNAME, DOC, &TABLE, &CNST, DFLT, LO, HI, UTYP, UTYP },
  25. #undef  DEF_UM_TABLE
  26. #define DEF_UM_TABLE(NAME,FNAME,DOC,TABLE,CNST,LO,DFLT,HI)  \
  27.     { NAME, FNAME, DOC, &TABLE, &CNST, DFLT, LO, HI, UTYP, MTYP },
  28. #undef  DEF_UT_TABLE
  29. #define DEF_UT_TABLE(NAME,FNAME,DOC,TABLE,CNST,LO,DFLT,HI)  \
  30.     { NAME, FNAME, DOC, &TABLE, &CNST, DFLT, LO, HI, UTYP, TTYP },
  31. #undef  DEF_TM_TABLE
  32. #define DEF_TM_TABLE(NAME,FNAME,DOC,TABLE,CNST,LO,DFLT,HI)  \
  33.     { NAME, FNAME, DOC, &TABLE, &CNST, DFLT, LO, HI, TTYP, MTYP },
  34. #undef  DEF_TT_TABLE
  35. #define DEF_TT_TABLE(NAME,FNAME,DOC,TABLE,CNST,LO,DFLT,HI)  \
  36.     { NAME, FNAME, DOC, &TABLE, &CNST, DFLT, LO, HI, TTYP, TTYP },
  37. #undef  DEF_MM_TABLE
  38. #define DEF_MM_TABLE(NAME,FNAME,DOC,TABLE,CNST,LO,DFLT,HI)  \
  39.     { NAME, FNAME, DOC, &TABLE, &CNST, DFLT, LO, HI, MTYP, MTYP },
  40.  
  41. #include "table.def"
  42.  
  43.     { NULL }
  44. };
  45.  
  46. /* Define the accessor functions themselves. */
  47.  
  48. #undef  DEF_UU_TABLE
  49. #define DEF_UU_TABLE(name,FNAME,doc,TABLE,CNST,lo,DFLT,hi)  \
  50.   short *TABLE = NULL, CNST = DFLT;  \
  51.   int FNAME(u1,u2) int u1, u2;  \
  52.     { checku(u1);  checku(u2);  \
  53.       return (TABLE ? TABLE[numutypes*(u1)+(u2)] : CNST); }
  54.  
  55. #undef  DEF_UM_TABLE
  56. #define DEF_UM_TABLE(name,FNAME,doc,TABLE,CNST,lo,DFLT,hi)  \
  57.   short *TABLE = NULL, CNST = DFLT;  \
  58.   int FNAME(u,m) int u, m;  \
  59.     { checku(u);  checkm(m);  \
  60.       return (TABLE ? TABLE[nummtypes*(u)+(m)] : CNST); }
  61.  
  62. #undef  DEF_UT_TABLE
  63. #define DEF_UT_TABLE(name,FNAME,doc,TABLE,CNST,lo,DFLT,hi)  \
  64.   short *TABLE = NULL, CNST = DFLT;  \
  65.   int FNAME(u,t) int u, t;  \
  66.     { checku(u);  checkt(t);  \
  67.       return (TABLE ? TABLE[numttypes*(u)+(t)] : CNST); }
  68.  
  69. #undef  DEF_TM_TABLE
  70. #define DEF_TM_TABLE(name,FNAME,doc,TABLE,CNST,lo,DFLT,hi)  \
  71.   short *TABLE = NULL, CNST = DFLT;  \
  72.   int FNAME(t,m) int t, m;  \
  73.     { checkt(t);  checkm(m);  \
  74.       return (TABLE ? TABLE[nummtypes*(t)+(m)] : CNST); }
  75.  
  76. #undef  DEF_TT_TABLE
  77. #define DEF_TT_TABLE(name,FNAME,doc,TABLE,CNST,lo,DFLT,hi)  \
  78.   short *TABLE = NULL, CNST = DFLT;  \
  79.   int FNAME(t1,t2) int t1, t2;  \
  80.     { checkt(t1);  checkt(t2);  \
  81.       return (TABLE ? TABLE[numttypes*(t1)+(t2)] : CNST); }
  82.  
  83. #undef  DEF_MM_TABLE
  84. #define DEF_MM_TABLE(name,FNAME,doc,TABLE,CNST,lo,DFLT,hi)  \
  85.   short *TABLE = NULL, CNST = DFLT;  \
  86.   int FNAME(m1,m2) int m1, m2;  \
  87.     { checkm(m1);  checkm(m2);  \
  88.       return (TABLE ? TABLE[nummtypes*(m1)+(m2)] : CNST); }
  89.  
  90. #include "table.def"
  91.  
  92. #endif /* n SPECIAL */
  93.